home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #1 / Ham Radio 2000.iso / ham2000 / packet / p_aa4re / mbb35src / 8530con.asm < prev    next >
Encoding:
Assembly Source File  |  1987-01-01  |  17.6 KB  |  332 lines

  1.  
  2. ;==========================================================================;
  3. ; 8530 SCC Hardware constants -- Paccomm Board                             ;
  4. ;==========================================================================;
  5.  
  6. ;--------------------------------------------------------------------------;
  7. ; Modem and SCC address locations                                          ;
  8. ;--------------------------------------------------------------------------;
  9.  
  10. scc_modem       EQU     0     ;  Modem control port
  11.  
  12. scca_ctl        EQU     6     ;  SCC Channel A control port
  13. scca_data       EQU     7     ;  SCC Channel A data port
  14. sccb_ctl        EQU     4     ;  SCC channel B control port
  15. sccb_data       EQU     5     ;  SCC Channel B data port
  16.  
  17. ;--------------------------------------------------------------------------;
  18. ; Masks to find things                                                     ;
  19. ;--------------------------------------------------------------------------;
  20.  
  21. scc_card_mask   EQU     0FF0H ;  Mask to obtain card address from port address
  22. scc_chan_mask   EQU     0010B ;  Mask to check what channel this is from port
  23. scc_data_mask   EQU     0001B ;  "OR" this in to get the data port!
  24.  
  25. scc_int_mask    EQU     1000B ;  Mask to find the channel in the
  26.                               ;  interrupt vector
  27.  
  28. ;--------------------------------------------------------------------------;
  29. ; SCC registers                                                            ;
  30. ;--------------------------------------------------------------------------;
  31.  
  32. sccreg0         EQU     0     ;  SCC register 0
  33. sccreg1         EQU     1     ;  SCC register 1
  34. sccreg2         EQU     2     ;  SCC register 2
  35. sccreg3         EQU     3     ;  SCC register 3
  36. sccreg4         EQU     4     ;  SCC register 4
  37. sccreg5         EQU     5     ;  SCC register 5
  38. sccreg6         EQU     6     ;  SCC register 6
  39. sccreg7         EQU     7     ;  SCC register 7
  40. sccreg8         EQU     8     ;  SCC register 8
  41. sccreg9         EQU     9     ;  SCC register 9
  42. sccreg10        EQU     10    ;  SCC register 10
  43. sccreg11        EQU     11    ;  SCC register 11
  44. sccreg12        EQU     12    ;  SCC register 12
  45. sccreg13        EQU     13    ;  SCC register 13
  46. sccreg14        EQU     14    ;  SCC register 14
  47. sccreg15        EQU     15    ;  SCC register 15
  48.  
  49. ;==========================================================================;
  50. ; SCC read registers                                                       ;
  51. ;==========================================================================;
  52.  
  53. ;--------------------------------------------------------------------------;
  54. ; Read Register 0 -- Tx/Rx and External Flag masks                         ;
  55. ;--------------------------------------------------------------------------;
  56.  
  57. rx_abort        EQU     10000000B  ; Receive break/abort
  58. tx_unrun        EQU     01000000B  ; Transmit underrun
  59. cts_pin         EQU     00100000B  ; SCC CTS pin
  60. rx_hunt         EQU     00010000B  ; sync/hunt flag
  61. dcd_pin         EQU     00001000B  ; SCC DCD pin
  62. tx_tbe          EQU     00000100B  ; Transmit buffer empty
  63. zero_cnt        EQU     00000010B  ; Baud-rate gen. zero count
  64. rx_rda          EQU     00000001B  ; Receive data available
  65.  
  66. ;--------------------------------------------------------------------------;
  67. ; Read Register 1 -- Receive Condition Flag                                ;
  68. ;--------------------------------------------------------------------------;
  69.  
  70. rx_eof          EQU     10000000B  ; Receive End of frame
  71. rx_crcerr       EQU     01000000B  ; CRC/framing error flag
  72. rx_ovrn         EQU     00100000B  ; RX overrun error flag
  73. rx_parity       EQU     00010000B  ; RX parity error flag
  74. rx_resid        EQU     00001110B  ; Residual data code
  75. tx_allsent      EQU     00000001B  ; Transmit all-sent flag (async)
  76.  
  77. ;--------------------------------------------------------------------------;
  78. ; Read Register 2 holds the Interrupt Vector, if used                      ;
  79. ; Channel A holds the base value of the vector, while                      ;
  80. ; the Channel B value may include status modifications                     ;
  81. ;--------------------------------------------------------------------------;
  82.  
  83. ;--------------------------------------------------------------------------;
  84. ; Read Register 3.  Interrupt pending flags                                ;
  85. ; Channel A only, Channel B is always zero                                 ;
  86. ;--------------------------------------------------------------------------;
  87.  
  88. a_rx_ip         EQU     00100000B  ; Channel A Rx interrupt pend.
  89. a_tx_ip         EQU     00010000B  ; Channel A Tx interrupt pend.
  90. a_ext_ip        EQU     00001000B  ; Channel A External int. pend.
  91. b_rx_ip         EQU     00000100B  ; Channel B Rx interrupt pend.
  92. b_tx_ip         EQU     00000010B  ; Channel B Tx interrupt pend.
  93. b_ext_ip        EQU     00000001B  ; Channel B External int. pend.
  94.  
  95. ;--------------------------------------------------------------------------;
  96. ; Read Register 8 is the data register, which is usually accessed directly ;
  97. ;--------------------------------------------------------------------------;
  98.  
  99. ;--------------------------------------------------------------------------;
  100. ; Read Register 10.  Misc. status flags                                    ;
  101. ;--------------------------------------------------------------------------;
  102.  
  103. clk1_mis        EQU     10000000B  ; One clock missing (FM mode)
  104. clk2_mis        EQU     01000000B  ; Two clock missing (FM mode)
  105. loop_snd        EQU     00010000B  ; Loop sending (SDLC)
  106. on_loop         EQU     00000010B  ; On loop flag (SDLC)
  107. ;               EQU     ..0.00.0B  ; Bits not used
  108.  
  109. ;--------------------------------------------------------------------------;
  110. ; Read Register 12 is low half baud rate divider                           ;
  111. ;--------------------------------------------------------------------------;
  112. ; Read Register 13 is high half baud rate divider                          ;
  113. ;--------------------------------------------------------------------------;
  114. ; Read Register 15 shows what is in write register 15                      ;
  115. ;--------------------------------------------------------------------------;
  116.  
  117. ;==========================================================================;
  118. ; SCC Write Registers                                                      ;
  119. ;==========================================================================;
  120.  
  121. ;--------------------------------------------------------------------------;
  122. ; Write Register 0. Reg. pointers and Master Bits                          ;
  123. ; There are two commands hidden in this register                           ;
  124. ;--------------------------------------------------------------------------;
  125.  
  126. ;               EQU     xx......B  ; First command bits
  127. ;               EQU     00......B  ;   Null
  128. rst_rcrc        EQU     01000000B  ;   Reset RX CRC checker
  129. rst_tcrc        EQU     10000000B  ;   Reset Tx CRC generator
  130. rst_eom         EQU     11000000B  ;   Reset Tx end-of-msg Flag
  131.  
  132. ;               EQU     .....xxxB  ; Second command bits
  133. ;               EQU     ..000...B  ;   Null
  134. pnt_high        EQU     00001000B  ;   Point high command
  135. rst_ext         EQU     00010000B  ;   Reset external/status interrupt
  136. tx_abort        EQU     00011000B  ;   Transmit an abort in SDLC
  137. nxt_rxen        EQU     00100000B  ;   Enable int. on next Rx char
  138. rst_txip        EQU     00101000B  ;   Reset Tx Interrupt pending
  139. rst_err1        EQU     00110000B  ;   Reset error Flags in Reg 1
  140. rst_ius         EQU     00111000B  ;   Reset highest Int. service
  141.  
  142. ;               EQU     .....xxxB  ; Select another register
  143.  
  144. ;--------------------------------------------------------------------------;
  145. ; Write Register 1.  (Tx/Rx Interrupt and DMA)                             ;
  146. ;--------------------------------------------------------------------------;
  147.  
  148. dma_enab        EQU     10000000B  ; Wait/DMA request enable
  149. dma_rqst        EQU     01000000B  ; Wait/DMA request function
  150. dma_txrx        EQU     00100000B  ; Wait/DMA on Rx or TX
  151.  
  152. ;                       ...xx...B  ; Receiver Interrupt setting
  153. rxi_none        EQU     00000000B  ;   None
  154. rxi_frst        EQU     00001000B  ;   Int on first RX and special cond
  155. rxi_all         EQU     00010000B  ;   Int on all Rx and special cond
  156. rxi_spcl        EQU     00011000B  ;   Int on RX special cond only
  157.  
  158. par_spcl        EQU     00000100B  ; Parity is special RX condition
  159. txi_enab        EQU     00000010B  ; Tx Interrupt Master Enable
  160. exi_enab        EQU     00000001B  ; External Interrupt Enable
  161.  
  162. ;--------------------------------------------------------------------------;
  163. ; Write Register 2 contains the Interrupt Vector                           ;
  164. ;--------------------------------------------------------------------------;
  165.  
  166. ;--------------------------------------------------------------------------;
  167. ; Write Register 3.  Rx parameters and control                             ;
  168. ;--------------------------------------------------------------------------;
  169.  
  170. ;                       xx......B  ; Set receive bits per character
  171. rx_5bits        EQU     00000000B  ;   RX 5 bits/char default = 00
  172. rx_7bits        EQU     01000000B  ;   RX 7 bits per character
  173. rx_6bits        EQU     10000000B  ;   RX 6 bits per character
  174. rx_8bits        EQU     11000000B  ;   RX 8 bits per character
  175.  
  176. autoenab        EQU     00100000B  ; Enable auto mode DCD and CTS
  177. hunt_on         EQU     00010000B  ; Turn on hunt mode in RX
  178. rx_crcon        EQU     00001000B  ; Turn on RX crc checker
  179. adsearch        EQU     00000100B  ; Turn on address search in SDLC
  180. sync_inh        EQU     00000010B  ; Sync load inhibit flag
  181. rx_enabl        EQU     00000001B  ; Master RX enable flag
  182.  
  183. ;--------------------------------------------------------------------------;
  184. ; Write Register 4.  Tx/Rx misc parameters and modes                       ;
  185. ;--------------------------------------------------------------------------;
  186.  
  187. ;               EQU     xx......B  ; Clock mode bits
  188. x1_clck         EQU     00000000B  ;   X1 clock mode default 00
  189. x16_clck        EQU     01000000B  ;   X16 clock mode
  190. x32_clck        EQU     10000000B  ;   X32 clock mode
  191. x64_clck        EQU     11000000B  ;   X64 clock mode
  192.  
  193. ;                       ..xx....B  ; Sync mode
  194. sync_8b         EQU     00000000B  ;   8 bit sync mode default 00
  195. sync_16b        EQU     00010000B  ;   16 bit sync character
  196. sync_sdl        EQU     00100000B  ;   SDLC sync mode
  197. sync_ext        EQU     00110000B  ;   External sync mode
  198.  
  199. ;                       ....xx..B  ; Stop bits
  200. sync_mod        EQU     00000000B  ;   SYNC mode default by 00
  201. stop_1bt        EQU     00000100B  ;   1 stop bit in async mode
  202. stop_15b        EQU     00001000B  ;   1.5 stop bits in async mode
  203. stop_2bt        EQU     00001100B  ;   2 stop bits in async mode
  204.  
  205. even_par        EQU     00000010B  ; Parity mode even/*odd
  206. enab_par        EQU     00000001B  ; Enable parity check/gen.
  207.  
  208. ;--------------------------------------------------------------------------;
  209. ; Write Register 5.  TX parameters and commands                            ;
  210. ;--------------------------------------------------------------------------;
  211.  
  212. dtr_pin         EQU     10000000B  ; SCC DTR pin set
  213.  
  214. ;                       .xx.....B  ; Transmit bits per character
  215. tx_5bits        EQU     00000000B  ;   Tx 5 bits/char default 00
  216. tx_7bits        EQU     00100000B  ;   Tx 7 bits per character
  217. tx_6bits        EQU     01000000B  ;   Tx 6 bits per character
  218. tx_8bits        EQU     01100000B  ;   Tx 8 bits per character
  219.  
  220. tx_break        EQU     00010000B  ; Send a break character
  221. tx_enabl        EQU     00001000B  ; master transmit enable
  222. tx_crc16        EQU     00000100B  ; CRC16/*SDLC CRC mode
  223. rts_pin         EQU     00000010B  ; SCC RTS pin set
  224. tx_crcen        EQU     00000001B  ; Transmit CRC enable
  225.  
  226. ;--------------------------------------------------------------------------;
  227. ; Write Register 6 is the address field in SDLC mode                       ;
  228. ;--------------------------------------------------------------------------;
  229. ; Write Register 7 is loaded with sync byte, Flag in SDLC                  ;
  230. ;--------------------------------------------------------------------------;
  231. ; Write Register 8 is Tx data register                                     ;
  232. ;--------------------------------------------------------------------------;
  233.  
  234. ;--------------------------------------------------------------------------;
  235. ; Write Register 9.  Master Interrupt control register                     ;
  236. ;--------------------------------------------------------------------------;
  237.  
  238. ;                       xx......B  ;
  239. ;                       00......B  ; Null
  240. chbreset        EQU     01000000B  ; Channel B reset
  241. chareset        EQU     10000000B  ; Channel A reset
  242. sccreset        EQU     11000000B  ; Master chip hardware reset
  243.  
  244. ;                       00100000B  ; Not used
  245. int_hilo        EQU     00010000B  ; interrupt status *lo/hi
  246. int_enab        EQU     00001000B  ; Master chip interrupt enable
  247. dis_lowr        EQU     00000100B  ; Disable lower interrupt chain
  248. no_vectr        EQU     00000010B  ; No interrupt vector from SCC
  249. enab_vis        EQU     00000001B  ; enable vector-includes-status
  250.  
  251. ;--------------------------------------------------------------------------;
  252. ; Write Register 10.  Misc. Tx/Rx control bits                             ;
  253. ;--------------------------------------------------------------------------;
  254.  
  255. crc_1or0        EQU     10000000B  ; CRC preset to one or zero
  256.  
  257. ;                       .xx.....B  ; Mode select
  258. nrz_mode        EQU     00000000B  ;   Set mode to NRZ
  259. nrzimode        EQU     00100000B  ;   Set mode to NRZI
  260. fm1_mode        EQU     01000000B  ;   Set mode to FM1
  261. fm0_mode        EQU     01100000B  ;   Set mode to FM0
  262.  
  263. act_poll        EQU     00010000B  ; Go active on poll in SDLC loop
  264. idl_mark        EQU     00001000B  ; Mark/*Flag while Tx idle
  265. und_abrt        EQU     00000100B  ; Abort/*Flag on Tx underrun
  266. sdlcloop        EQU     00000010B  ; Set SDLC loop mode
  267. sync_8_6        EQU     00000001B  ; 6bit/*8bit sync mode
  268.  
  269. ;--------------------------------------------------------------------------;
  270. ; Write Register 11.  Clock control register                               ;
  271. ;--------------------------------------------------------------------------;
  272.  
  273. xtal_osc        EQU     10000000B  ; Use internal xtal oscillator
  274.  
  275. ;                       .xx.....B  ; Rx clock
  276. rxc_rtxc        EQU     00000000B  ;   Rx clock from RTXC pin
  277. rxc_trxc        EQU     00100000B  ;   Rx clock from TRXC pin
  278. rxc_brg         EQU     01000000B  ;   Rx clock from baud rate generator
  279. rxc_dpll        EQU     01100000B  ;   Rx clock  from DPLL
  280.  
  281. ;                       ...xx...B  ; Tx clock
  282. txc_rtxc        EQU     00000000B  ;   Tx clock from RTXC pin
  283. txc_trxc        EQU     00001000B  ;   Tx clock from TRXC pin
  284. txc_brg         EQU     00010000B  ;   Tx clock from baud rate generator
  285. txc_dpll        EQU     00011000B  ;   Tx clock from DPLL out
  286.  
  287. trxc_out        EQU     00000100B  ; TRXC pin is an *in/out
  288.  
  289. ;                       ......xxB  ; TXRC pin select
  290. trxc_xtl        EQU     00000000B  ;   TRXC pin out from XTAL OSC
  291. trxc_txc        EQU     00000001B  ;   TRXC pin out from Tx clock
  292. trxc_brg        EQU     00000010B  ;   TRXC pin out from BRG
  293. trxc_dpl        EQU     00000011B  ;   TRXC pin out from DPLL
  294.  
  295. ;--------------------------------------------------------------------------;
  296. ; Write Register 12 is the low half of the Baud Rate Generator             ;
  297. ;--------------------------------------------------------------------------;
  298. ; Write Register 13 is the hi half of the Baud Rate Generator              ;
  299. ;--------------------------------------------------------------------------;
  300.  
  301. ;--------------------------------------------------------------------------;
  302. ; Write Register 14.  Misc mode and control bits                           ;
  303. ;--------------------------------------------------------------------------;
  304.  
  305. ;                       xxx.....B  ; DPLL mode
  306. ;                       000.....B  ;   Null
  307. dpllsrch        EQU     00100000B  ;   DPLL enter search mode
  308. rst_mclk        EQU     01000000B  ;   Reset missing clock latches
  309. dpll_dis        EQU     01100000B  ;   Disable DPLL, force search mode
  310. dpll_brg        EQU     10000000B  ;   Set DPLL source to baud rate gen
  311. dpll_rtx        EQU     10100000B  ;   Set DPLL source to RTXC pin
  312. mod_fm          EQU     11000000B  ;   Set operating mode to FM
  313. mod_nrzi        EQU     11100000B  ;   Set operating mode to NRZI
  314.  
  315. lcl_loop        EQU     00010000B  ; Local loop-back mode TxD to RxD
  316. autoecho        EQU     00001000B  ; Auto-echo mode (RxD = TxD + RxD)
  317. dtr_func        EQU     00000100B  ; REQ/*DTR DTR pin function
  318. brg_clck        EQU     00000010B  ; SCC/*RXTC clock baud-rate-gen in
  319. enab_brg        EQU     00000001B  ; Enable baud-rate-generator
  320.  
  321. ;--------------------------------------------------------------------------;
  322. ; Write Register 15.  External/status interrupt control                    ;
  323. ;--------------------------------------------------------------------------;
  324.  
  325. rxie_brk        EQU     10000000B  ; Rx Break/abort detect Int. enable
  326. txie_eom        EQU     01000000B  ; Tx EOM/underrun Int. enable
  327. cts_ie          EQU     00100000B  ; CTS pin interrupt enable
  328. hunt_ie         EQU     00010000B  ; SYNC/HUNT interrupt enable
  329. dcd_ie          EQU     00001000B  ; Carrier detect interrupt enable
  330. brg0_ie         EQU     00000010B  ; Baud-rate-gen. zero count int. enab
  331. ;                       .....0.0B  ; Not used
  332.